Stored Procedure কে EF এর মধ্যে ম্যানেজ করা

Microsoft Technologies - এন্টিটি ফ্রেমওয়র্ক (Entity Framework) Stored Procedure এবং View ব্যবহার করা |
198
198

Entity Framework (EF) তে Stored Procedure ব্যবহার করা একটি অত্যন্ত কার্যকরী পদ্ধতি, যার মাধ্যমে আপনি ডেটাবেস অপারেশনগুলি আরো দ্রুত এবং নিরাপদে পরিচালনা করতে পারেন। EF তে Stored Procedure ব্যবহার করার জন্য কিছু নির্দিষ্ট কৌশল রয়েছে, যা আপনার কোডে Raw SQL কুয়েরি বা Stored Procedure ব্যবহার করার জন্য সহায়তা করে। EF 6 এবং EF Core উভয়ই Stored Procedure এর সমর্থন দেয়, তবে EF Core এ কিছু নতুন ফিচার এবং সুবিধা রয়েছে যা Stored Procedure ব্যবস্থাপনা আরো সহজ এবং শক্তিশালী করে।


Stored Procedure কিভাবে EF তে ব্যবহার করবেন

EF এর মাধ্যমে Stored Procedure কল করার জন্য মূলত দুইটি পদ্ধতি ব্যবহার করা হয়:

  1. FromSqlRaw (ডেটা রিট্রাইভ করার জন্য)
  2. ExecuteSqlRaw (ইনসার্ট, আপডেট বা ডিলিট অপারেশন করার জন্য)

এগুলো ছাড়াও EF 7+ এ কিছু নতুন ফিচার যেমন ExecuteSqlInterpolated এবং FromSqlInterpolated যুক্ত করা হয়েছে।


FromSqlRaw দিয়ে Stored Procedure থেকে ডেটা রিটার্ন করা

FromSqlRaw মেথড ব্যবহার করে আপনি Stored Procedure থেকে ডেটা রিটার্ন করতে পারেন এবং সেই ডেটা আপনার Entity মডেল দিয়ে ম্যাপ করতে পারেন।

উদাহরণ:

ধরা যাক, আপনার ডেটাবেসে একটি Stored Procedure রয়েছে যা একটি নির্দিষ্ট বয়সের ছাত্রদের তথ্য রিটার্ন করে:

CREATE PROCEDURE GetStudentsByAge
    @age INT
AS
BEGIN
    SELECT * FROM Students WHERE Age = @age;
END

এখন, EF এর মাধ্যমে এই Stored Procedure কল করে আমরা ডেটা রিটার্ন করতে পারি:

using (var context = new SchoolContext())
{
    var age = 20;

    // Stored Procedure থেকে ডেটা রিটার্ন করা
    var students = context.Students
                          .FromSqlRaw("EXEC GetStudentsByAge @age", 
                                      new SqlParameter("@age", age))
                          .ToList();

    foreach (var student in students)
    {
        Console.WriteLine($"{student.Name}, {student.Age}");
    }
}

এখানে:

  • FromSqlRaw: এটি Raw SQL কুয়েরি বা Stored Procedure কল করতে ব্যবহৃত হয়।
  • SqlParameter: প্যারামিটার ব্যবহার করে SQL কুয়েরির ইনপুট ডেটা সুরক্ষিতভাবে পাস করা হয়।

এভাবে EF আপনার Students Entity ক্লাসের সাথে রিটার্ন হওয়া ডেটা ম্যাপ করে এবং ডেটাবেস থেকে প্রয়োজনীয় তথ্য রিটার্ন করে।


ExecuteSqlRaw দিয়ে ডেটা ইনসার্ট বা আপডেট করা

ExecuteSqlRaw মেথড দিয়ে আপনি Stored Procedure কল করে ডেটাবেসে INSERT, UPDATE অথবা DELETE অপারেশন করতে পারেন। এই মেথডটি সাধারণত কোনো ডেটা রিটার্ন না করার সময় ব্যবহৃত হয়, যেমন যখন আপনি ডেটাবেসে কোনো রেকর্ড ইনসার্ট করতে চান।

উদাহরণ:

ধরা যাক, আপনার ডেটাবেসে একটি Stored Procedure রয়েছে যা একটি নতুন ছাত্র যোগ করে:

CREATE PROCEDURE AddStudent
    @name NVARCHAR(100),
    @age INT,
    @address NVARCHAR(200)
AS
BEGIN
    INSERT INTO Students (Name, Age, Address)
    VALUES (@name, @age, @address);
END

এখন, আপনি EF এর মাধ্যমে এই Stored Procedure কল করতে পারেন:

using (var context = new SchoolContext())
{
    var name = "John Doe";
    var age = 22;
    var address = "123 Main St";

    // Stored Procedure কল করে ডেটাবেসে ইনসার্ট করা
    context.Database.ExecuteSqlRaw("EXEC AddStudent @name, @age, @address", 
        new SqlParameter("@name", name),
        new SqlParameter("@age", age),
        new SqlParameter("@address", address));
}

এখানে:

  • ExecuteSqlRaw: এটি Raw SQL বা Stored Procedure এক্সিকিউট করতে ব্যবহৃত হয়। এটি কোনো রিটার্ন ভ্যালু দেয় না, কিন্তু এটি ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে এবং ডেটা আপডেট, ইনসার্ট বা ডিলিট করে।

Stored Procedure এর আউটপুট মডেল মেপিং

যখন আপনি Stored Procedure থেকে ডেটা রিটার্ন করেন, EF স্বয়ংক্রিয়ভাবে আউটপুটকে Entity ক্লাসের সাথে ম্যাপ করে। তবে, আপনি যদি আউটপুটের জন্য একটি কাস্টম মডেল বা ডেটা ক্লাস ব্যবহার করতে চান, তবে EF তে আপনার আউটপুটকে সেই মডেলটির সাথে ম্যাপ করা যেতে পারে।

উদাহরণ:

ধরা যাক, আপনার একটি StudentDTO ক্লাস আছে যেটি Student Entity এর কিছু নির্দিষ্ট ফিল্ড নিয়ে তৈরি।

public class StudentDTO
{
    public string Name { get; set; }
    public int Age { get; set; }
}

using (var context = new SchoolContext())
{
    var age = 20;

    // FromSqlRaw দিয়ে কাস্টম DTO ব্যবহার করা
    var students = context.Set<StudentDTO>()
                          .FromSqlRaw("EXEC GetStudentsByAge @age", 
                                      new SqlParameter("@age", age))
                          .ToList();

    foreach (var student in students)
    {
        Console.WriteLine($"{student.Name}, {student.Age}");
    }
}

এখানে:

  • context.Set<StudentDTO>(): StudentDTO ক্লাসকে Entity হিসেবে ব্যবহার করা হচ্ছে।
  • FromSqlRaw: এটি Stored Procedure থেকে ডেটা রিটার্ন করে এবং StudentDTO ক্লাসে ম্যাপ করে।

Stored Procedure এবং EF Core

EF Core তে Stored Procedure ব্যবহার করার জন্য আপনাকে ExecuteSqlRaw বা FromSqlRaw ব্যবহার করতে হয়। EF Core 7 এবং তার পরবর্তী সংস্করণে কিছু নতুন ফিচার যুক্ত হয়েছে, যেমন ExecuteSqlInterpolated এবং FromSqlInterpolated, যা প্যারামিটারাইজড কুয়েরি লেখাকে আরও নিরাপদ করে তোলে। এই নতুন ফিচারের সাহায্যে SQL ইনজেকশন থেকে রক্ষা পাওয়া যায়।

উদাহরণ:

context.Database.ExecuteSqlInterpolated($"EXEC AddStudent {name}, {age}, {address}");

এখানে:

  • ExecuteSqlInterpolated: এটি string interpolation ব্যবহার করে SQL কুয়েরি তৈরি করে, যা প্যারামিটারাইজড এবং আরও নিরাপদ হয়।

সারাংশ

  • Stored Procedure EF তে ব্যবহার করতে, FromSqlRaw এবং ExecuteSqlRaw মেথডগুলি ব্যবহৃত হয়।
  • FromSqlRaw ডেটা রিটার্ন করা Stored Procedure কল করতে ব্যবহৃত হয়, এবং ExecuteSqlRaw ইনসার্ট, আপডেট বা ডিলিট অপারেশন করার জন্য ব্যবহৃত হয়।
  • EF 7 এবং তার পরবর্তী সংস্করণে ExecuteSqlInterpolated এবং FromSqlInterpolated ব্যবহার করা যেতে পারে, যা SQL ইনজেকশনের ঝুঁকি কমায়।
  • Stored Procedure ডেটাবেস অপারেশনগুলিকে সহজ, দ্রুত এবং নিরাপদ করতে সাহায্য করে, বিশেষত বড় অ্যাপ্লিকেশন বা কাস্টম ডেটাবেস অপারেশনগুলির জন্য।

এইভাবে, EF তে Stored Procedure ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের পারফরম্যান্স এবং সিকিউরিটি উন্নত করতে পারবেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion